// 格式化工具函数

/**
 * 格式化价格
 * @param {number} price 价格
 * @param {boolean} showSymbol 是否显示货币符号
 * @returns {string} 格式化后的价格
 */
export function formatPrice(price, showSymbol = true) {
  const symbol = showSymbol ? '¥' : ''
  return symbol + Number(price).toFixed(2)
}

/**
 * 格式化积分
 * @param {number} points 积分
 * @returns {string} 格式化后的积分
 */
export function formatPoints(points) {
  return points + '积分'
}

/**
 * 格式化日期
 * @param {string|Date} date 日期
 * @param {string} format 格式
 * @returns {string} 格式化后的日期
 */
export function formatDate(date, format = 'YYYY-MM-DD') {
  if (!date) return ''
  
  const d = new Date(date)
  const year = d.getFullYear()
  const month = String(d.getMonth() + 1).padStart(2, '0')
  const day = String(d.getDate()).padStart(2, '0')
  const hour = String(d.getHours()).padStart(2, '0')
  const minute = String(d.getMinutes()).padStart(2, '0')
  const second = String(d.getSeconds()).padStart(2, '0')
  
  return format
    .replace('YYYY', year)
    .replace('MM', month)
    .replace('DD', day)
    .replace('HH', hour)
    .replace('mm', minute)
    .replace('ss', second)
}

/**
 * 格式化时间（相对时间）
 * @param {string|Date} date 日期
 * @returns {string} 相对时间
 */
export function formatRelativeTime(date) {
  if (!date) return ''
  
  const now = new Date()
  const target = new Date(date)
  const diff = now - target
  
  const minute = 60 * 1000
  const hour = 60 * minute
  const day = 24 * hour
  const week = 7 * day
  
  if (diff < minute) {
    return '刚刚'
  } else if (diff < hour) {
    return Math.floor(diff / minute) + '分钟前'
  } else if (diff < day) {
    return Math.floor(diff / hour) + '小时前'
  } else if (diff < week) {
    return Math.floor(diff / day) + '天前'
  } else {
    return formatDate(date, 'MM-DD')
  }
}

/**
 * 截断文本
 * @param {string} text 文本
 * @param {number} length 长度
 * @returns {string} 截断后的文本
 */
export function truncateText(text, length = 50) {
  if (!text) return ''
  return text.length > length ? text.substring(0, length) + '...' : text
}

/**
 * 防抖函数
 * @param {Function} func 函数
 * @param {number} wait 等待时间
 * @returns {Function} 防抖后的函数
 */
export function debounce(func, wait) {
  let timeout
  return function(...args) {
    clearTimeout(timeout)
    timeout = setTimeout(() => func.apply(this, args), wait)
  }
}

/**
 * 节流函数
 * @param {Function} func 函数
 * @param {number} wait 等待时间
 * @returns {Function} 节流后的函数
 */
export function throttle(func, wait) {
  let timeout
  return function(...args) {
    if (!timeout) {
      timeout = setTimeout(() => {
        timeout = null
        func.apply(this, args)
      }, wait)
    }
  }
}